/**
*
*/
package de.yaams.maker.programm.project.tab;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.bcb.BcbBuilder;
import de.yaams.maker.helper.gui.dock.DockHolder;
import de.yaams.maker.helper.gui.dock.DockLinkPanel;
import de.yaams.maker.helper.gui.icons.IconCache;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YaFrame;
import de.yaams.maker.programm.project.Project;
import de.yaams.maker.programm.project.ProjectTabEvent;
import de.yaams.maker.programm.project.objects.BasicObjectManager;
import de.yaams.maker.programm.tabs.BasicTabEvent;
import de.yaams.maker.programm.tabs.HomeTab;
import de.yaams.maker.programm.tabs.TabEvent;
/**
* @author abby
*
*/
public class ProjectHomeTab extends ProjectTab {
private static final long serialVersionUID = -7817071123542539005L;
/**
* @param project
*/
public ProjectHomeTab(Project project) {
super(project);
buildGui();
addSaveButton();
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.maker.programm.tabs.YaTab#buildBcb(de.yaams.maker.helper.gui
* .bcb.BcbBuilder)
*/
@Override
protected void buildBcb(BcbBuilder bcb) {
BasicTabEvent.buildBcb(bcb, project.getHash());
}
/*
* (non-Javadoc)
*
* @see de.yaams.maker.programm.tabs.YaTab#getIcon()
*/
@Override
public String getIcon() {
return project.getIcon();
}
/*
* (non-Javadoc)
*
* @see de.yaams.maker.programm.tabs.YaTab#getContent()
*/
@Override
public JComponent getContent() {
// load objects
ExtentionManagement.work(Project.EXLOAD, JavaHelper.createHashStringObj("project", project));
int c = project.getObjects().keySet().size();
// has nothing?
if (c == 0) {
return new JLabel(
I18N.t("Projekt {0} vom Projekttyp {1} enthält keine Objekte.", project.getTitle(), project.getTypeAsString()),
IconCache.get("error", 32), JLabel.CENTER);
}
// build lists
HashMap<String, ArrayList<BasicObjectManager>> elements = new HashMap<String, ArrayList<BasicObjectManager>>();
// add all
for (String s : project.getObjects().keySet()) {
BasicObjectManager b = project.getObjects().get(s);
// containts?
if (!elements.containsKey(b.getGroup())) {
elements.put(b.getGroup(), new ArrayList<BasicObjectManager>());
}
// add it
elements.get(b.getGroup()).add(b);
}
// build it
// build content
DockHolder d = new DockHolder("project.home", elements.keySet().size(), 1);
// add content
for (String key : elements.keySet()) {
ArrayList<BasicObjectManager> list = elements.get(key);
DockLinkPanel dlp = new DockLinkPanel();
dlp.setDock(d);
for (final BasicObjectManager bom : list) {
// add basic
dlp.addLink(bom.getTitle(), bom.getIcon(), bom.getDesc() == null ? null : "<html>" + bom.getDesc(), new AE() {
@Override
public void run() {
YaFrame.open(bom.getTabId());
}
});
}
dlp.buildGui(list.get(0).getGroup(), "yaams", false);
d.add(dlp);
}
JPanel cont = new JPanel(new BorderLayout());
cont.add(d, BorderLayout.CENTER);
cont.add(
HomeTab.createBottomDock(I18N
.t("<ul><li>Erstelle zuerst die passenden Helden</li><li>Lege danach die Karten an.</li><li>Zum Schluss kannst du dein Spiel testen und exportieren.</li>")),
BorderLayout.SOUTH);
// JPanel p = new JPanel(new GridLayout(1, 1));
// p.add();
return cont;
}
/*
* (non-Javadoc)
*
* @see de.yaams.maker.programm.tabs.YaTab#getTitle()
*/
@Override
public String getTitle() {
return project.getTitle();
}
/*
* (non-Javadoc)
*
* @see de.yaams.maker.programm.tabs.YaTab#getId()
*/
@Override
public String getId() {
return TabEvent.buildParameter(ProjectTabEvent.HOME, project, null);
}
/**
* Save chanced, overwrite it to implement it, and call addSaveTab() to add
* the support button
*/
@Override
protected void saveIntern() {
project.save();
}
}